/**
 * Title: TaskDistributionService.java
 * @author wujin
 * @date 2019年12月30日
 * @version 1.0
 */
package com.pm.service.task;

import com.pm.entity.po.task.TaskSubtasks;
import com.pm.entity.po.task.TaskTargetLightUpVo;
import com.pm.entity.po.task.TaskTargetPo;
import com.pm.entity.vo.RepeatSubtasksVo;
import com.pm.entity.vo.StateVo;
import com.pm.entity.vo.task.TaskTargetVo;
import com.pm.service.BaseService;

import java.util.List;
import java.util.Map;

/**
 * Title: TaskDistributionService
 * @author wujin
 * @date 2019年12月30日
 */
public interface TaskSubtasksService extends BaseService<TaskSubtasks> {

    List<TaskSubtasks> getListTaskSubtasks(TaskSubtasks taskSubtasks);

    List<RepeatSubtasksVo> repeatSubtasks(String targetName);

    List<RepeatSubtasksVo> repeat();

    List<StateVo> getstate(TaskSubtasks taskSubtasks);

    Integer updateNew(TaskSubtasks taskSubtasks);

    Integer updateAdopt(TaskSubtasks taskSubtasks);

    Integer updateLamp(TaskSubtasks taskSubtasks);

    Integer updateSocre(TaskSubtasks taskSubtasks);

    List<TaskSubtasks> getListALL(TaskSubtasks taskSubtasks);

    List<TaskSubtasks> getListQuarter(TaskSubtasks taskSubtasks);

    // 亮灯比例
    List<Map<String, Object>> getLampProportion();

    // 目标任务亮灯比例
    List<Map<String, Object>> getLampProportionNew(Integer taskId);

    /**
     * 获取工作目标完成进度
     * @param taskTargetVo
     * @return
     */
    List<TaskTargetPo> getTaskTargetFinishRate(TaskTargetVo taskTargetVo);

    /**
     * 根据任务id获取目标任务数量
     * @param taskId
     * @return
     */
    Integer getTaskSubtaskNum(Integer taskId);

    /**
     * 获取任务目标总量及亮等比例
     * @param taskTargetVo
     * @return
     */
    List<TaskTargetLightUpVo> getTaskTargetLightUpRate(TaskTargetVo taskTargetVo);

    /**
     * 删除目标任务的子任务
     * @param taskDistribution
     * @return
     */
    Integer removeTaskByParentId(TaskSubtasks taskDistribution);

    /**
     * 查询任务进度
     * @param taskDistribution
     * @return
     */
    List<TaskSubtasks> getTaskSpeedList(TaskSubtasks taskDistribution);
}
